package com.ydm.myapp001.utils;


import android.content.Context;
import android.os.Looper;
import android.text.TextUtils;
import android.view.Gravity;
import android.widget.Toast;

import java.text.DecimalFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import static android.widget.Toast.LENGTH_LONG;


/**
 * Created by yangdongming on 2018/1/17.
 */


public class CommonUtils {

    /**
     * (Value类型为String的情况)
     * 判断Map中是否有某个key，如果有这个key，进行判空处理，防止引用时的空指针
     *
     * @return String 判空处理后的Value值 
     */
    public static String mapStringValueEmptyDeal(Map<String, Object> map, String key) {
        if (map.containsKey(key)) {
            if (map.get(key) != null) {
                return map.get(key).toString();
            }
        }

        return "";
    }




    /**
     * (Value类型为List的情况)
     * 判断Map中是否有某个key，如果有这个key，进行判空处理，防止引用时的空指针
     *
     * @return List 判空处理后的Value值 
     */
    public static List mapArrayValueEmptyDeal(Map<String, Object> map, String key) {
        if (map.containsKey(key)) {
            if (map.get(key) != null) {
                List<Map<String,Object>> arr = (ArrayList)map.get(key);
                return arr;
            }
        }

        return new ArrayList();
    }


    /**
     * (Value类型为Map的情况)
     * 判断Map中是否有某个key，如果有这个key，进行判空处理，防止引用时的空指针
     *
     * @return Map 判空处理后的Value值 
     */
    public static Map<String, Object> mapMapValueEmptyDeal(Map<String, Object> map, String key) {
        if (map.containsKey(key)) {
            if (map.get(key) != null) {
                Map<String, Object> mapObj = (Map)map.get(key);

                return  mapObj;
            }
        }

        return new HashMap<String, Object>();
    }



    /*
    * 获取位数为n的整数随机数
    *
    * @param  bits 位数
    * @return String 整数随机数转为字符串返回 
    * */
    public static String getRandomNumString(int bitNums) {
        int baseNum = (int)Math.pow(10, bitNums);
        int num = (int) ((Math.random() * 9 + 1) * baseNum);
        String s = String.valueOf(num);

        return s;
    }


    /*
    * 获取系统时间的10位时间戳
    *
    * @return String 10位时间戳 
    * */
    public static String getTimestamp_10() {
        long time = System.currentTimeMillis()/1000; //获取系统时间的10位的时间戳
        String str = String.valueOf(time);

        return str;
    }

    /*
    * 获取系统时间的13位时间戳
    *
    * @return String 13位时间戳 
    * */
    public static String getTimestamp_13() {
        long time = System.currentTimeMillis(); //获取系统时间的13位的时间戳
        String str = String.valueOf(time);

        return str;
    }



    /**
     * ascii转字符串
     * @param paramString
     * @return
     */
    public static String asciiToString(String paramString) {
        StringBuffer localStringBuffer = new StringBuffer();
        localStringBuffer.append((char) Integer.parseInt(paramString));
        return localStringBuffer.toString();
    }

    /**
     * 多空格字符串
     * @param bitNum 空格的位数
     * @return
     */
    public static String blankString(int bitNum) {
        StringBuffer strbuf = new StringBuffer("");
        for(int i=0; i<bitNum; i++){
            strbuf.append(" ");
        }

        return strbuf.toString();
    }

    /*
    * double保留两位小数后转为String--仅保留有效位
    * */
    public static String doubleToStringReserveValidity(double doublevalue) {
        //使用0.00不足位补0，#.##仅保留有效位
        //return new DecimalFormat("0.00").format(num);
        return new DecimalFormat("#.##").format(doublevalue);
    }

    /*
    * double保留两位小数后转为String--不足位补0
    * */
    public static String doubleToString(double doublevalue) {
        //使用0.00不足位补0，#.##仅保留有效位
        //return new DecimalFormat("0.00").format(num);
        return new DecimalFormat("0.00").format(doublevalue);
    }

    /*
    * 检查商品条码的合法性：只要不为空即可，其他由后台判断处理
    * */
    public static boolean checkGoodsSnValidity(String goodsSn) {
        goodsSn = goodsSn.replace("\n", "");
        goodsSn = goodsSn.replace(" ", "");

        if (TextUtils.isEmpty(goodsSn)) {
            return false;
        }

        return true;
    }

    /*
    * 检查会员卡号的合法性--（1-15位）
    * */
    public static boolean checkMemberCardNoValidity(String memberSn) {
        if (TextUtils.isEmpty(memberSn)) {
            return false;
        }

        memberSn = memberSn.replace("\n","");
        memberSn = memberSn.replace(" ", "");

        if (memberSn.length()>=1 && memberSn.length()<=15) {
            return true;
        }

        return false;
    }

    /**
     * 判断当前是否在主线程
     * @return
     */
    public static boolean isOnMainThread(){
        return Thread.currentThread() == Looper.getMainLooper().getThread();
    }


    /**
     * 判断当前是否在主线程
     * @return
     */
    public static void showToastAtCenter(Context context, String msg){
        Toast toast = Toast.makeText(context, msg, LENGTH_LONG);
        toast.setGravity(Gravity.CENTER,0,0);
        toast.show();
    }


    /**
     * 字符串分隔，返回List
     * @return List<String>
     */
    public static List<String> stringToList(String totalStr, String divideStr){
        String str[] = totalStr.split(divideStr);
        return Arrays.asList(str);
    }



}
